home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 07 - 1991 / 07.06 Jun 91 / OQD Code / HandleTheMenus.c next >
Encoding:
C/C++ Source or Header  |  1991-04-09  |  1.8 KB  |  95 lines  |  [TEXT/KAHL]

  1. /****************************************
  2. File: HandleTheMenus
  3. Function: Create and Handle any menus.
  4. ****************************************/
  5. #define TRUE 1
  6. #define FALSE 0
  7.  
  8. #define AppleMenuID 1001
  9. #define FileMenuID 1002
  10.     #define QuitItem 1
  11. #define MixedMenuID 1003
  12.     #define ThreeOneItem 1
  13.     #define TwoTwoItem 2
  14.     #define TwoOneOne 3
  15.     #define OneOneOneOneItem 4
  16.     #define MixColorItem 6
  17.  
  18. MenuHandle AppleMenu, FileMenu, MixedMenu;
  19. int checkmark = 1;
  20.  
  21. /* External routines that are called */
  22. extern int checkmark;
  23. extern WindowPtr    MyWindow;
  24. extern void   D_Mixed_Colors();
  25.  
  26. void InitMyMenus(void);
  27. void HandleMenu(char *doneFlag, short   theMenu, short   theItem);
  28.  
  29. void InitMyMenus()
  30. /*    InitMyMenus() gets the menu resources
  31.     and creates the menu bar */
  32. {
  33. ClearMenuBar();
  34.  
  35. /* Apple menu */
  36. AppleMenu = GetMenu(AppleMenuID);
  37. InsertMenu (AppleMenu,0);
  38. AddResMenu(AppleMenu,'DRVR');
  39.  
  40. /* File menu */
  41. FileMenu = GetMenu(FileMenuID);
  42. InsertMenu (FileMenu,0);
  43.  
  44. /* Mixed menu */
  45. MixedMenu = GetMenu(MixedMenuID);
  46. InsertMenu (MixedMenu,0);
  47.  
  48. DrawMenuBar();
  49. }
  50.  
  51. void HandleMenu(doneFlag,theMenu,theItem)
  52. char     *doneFlag; 
  53. short   theMenu,theItem;
  54. {
  55. GrafPtr SavePort;
  56. Str255 DAName;
  57. short DNA;
  58.  
  59. switch (theMenu) {
  60.     case AppleMenuID:
  61.         GetPort(&SavePort);
  62.         GetItem(AppleMenu, theItem, &DAName);
  63.         DNA = OpenDeskAcc(DAName);
  64.         SetPort(SavePort);
  65.         break;
  66.  
  67.     case FileMenuID:
  68.         if (theItem == QuitItem)
  69.             *doneFlag = TRUE;
  70.         break;
  71.         
  72.     case MixedMenuID:
  73.         switch (theItem) {
  74.             case ThreeOneItem:
  75.             case TwoTwoItem:
  76.             case TwoOneOne:
  77.             case OneOneOneOneItem:
  78.                 CheckItem(MixedMenu, checkmark, 0);
  79.                 checkmark = theItem;
  80.                 CheckItem(MixedMenu, checkmark, 1);
  81.                 SetPort(MyWindow);
  82.                 InvalRect(&(MyWindow->portRect));
  83.                 break;
  84.             case MixColorItem:
  85.                 D_Mixed_Colors();
  86.                 break;
  87.             }
  88.         break;
  89.     }
  90.     
  91. HiliteMenu(0);
  92. }
  93.  
  94.  
  95.